// pages/equipmentMap/equipmentMap.js
const app = getApp();
import CommonService from '../../utils/service/commonService.js';
import Toast from '../../miniprogram_npm/@vant/weapp/toast/toast';
//去掉尾部的0
const regexp=/(?:\.0*|(\.\d+?)0+)$/;

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //设备列表
    list:[],
    //地区中心点-纬度
    latitude: '',
    //地区中心点-经度
    longitude: '',
    //地图上标记
    markers:[],
    //显示的设备信息
    info:{},
    //位置状态
    address:'暂无位置信息',
    //电量
    electric:0,
    //显示设备信息
    showInfo:false,
    //客户选择框
    showMember:false,
    //客户选择数据
    memberList:[],
    //选择的客户信息（默认显示天津蓝涤的设备）
    member:{
      id: null,
      name:'请选择公司'
    },
    //搜索客户输入的值
    valueSearchMember:'',
    //当前用户
    user: null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      user: app.globalData.userInfo
    })
    //获取设备列表
    this.getEquipmentList();
  },

  //获取设备列表
  getEquipmentList(){
    //先清空数据
    this.setData({
      list: [],
      markers: [],
      showInfo: false
    })

    Toast.loading({
      duration: 0,
      forbidClick: true,
      message: '加载设备中，请稍后...'
    });

    let param = {
      isAuth:true,
      className:'equipment',
      data:{
        searchAll:true,
        selectFields:["id","imeiObj","iconUrl","project","equipmentNo"]
      }
    }

    //查询某个客户
    if(this.data.user.departObj[0].type==1 && this.data.member.id){
      param.data.memberId=this.data.member.id;
    }

    CommonService.goFindList(param).then(res=>{
      if(res.data.data && res.data.data.result && res.data.data.count){
        let list=res.data.data.result;
        let newList=[];
        list.forEach(item => {
          if (item.imeiObj.length){
            item.iotData=item.imeiObj[0];
            newList.push(item);
          }
        });
        console.log('地图上所有设备列表');
        console.log(newList);

        this.setData({
          list: newList
        })

        //显示标注
        this.showMarkers();
      }else{
        Toast.fail('暂无设备信息');
      }
    }).catch((error) => {
      Toast.clear();
    })
  },

  //显示标注
  showMarkers(){
    let list=this.data.list;
    let markers=[];

    let flag=list.every(item=>{
      return item.imeiObj.length<=0;
    });

    if(flag){
      Toast.fail('暂无设备定位信息');
      this.setData({
        latitude: '39.898331',
        longitude: '116.411168'
      });
    }else{
      for(let i=0;i<list.length;i++){
        if(list[i].imeiObj.length){
          let iot=list[i].imeiObj[0];
          if(iot.lat && iot.lng){
            let marker={};
            //如果设备数量较少则显示图片，很多则显示图标
            if(list.length<=30){
              marker={
                id:Number(list[i].imei),
                latitude: iot.lat,
                longitude: iot.lng,
                iconPath:list[i].iconUrl,
                width:50,
                height:50
              }
            }else{
              marker={
                id:Number(list[i].imei),
                latitude: iot.lat,
                longitude: iot.lng,
                iconPath:'http://bangnizu.oss-cn-hangzhou.aliyuncs.com/zhandouli/images/mark.png',
                width:25,
                height:25
              }
            }
            markers.push(marker);
          }
        }
      }

      if(markers.length){
        Toast.clear();

        //地图自适应缩放
        this.mapAdapt(markers);

        this.setData({
          markers: markers
        })
      }else{
        Toast.fail('暂无设备定位信息');
        this.setData({
          latitude: '39.898331',
          longitude: '116.411168'
        })
      }
    }
  },

  //点击标注
  markertap(e) {
    this.setData({
      showInfo: true
    })

    let imei=e.markerId;
    let list=this.data.list;

    for(let i=0;i<list.length;i++){
      if(list[i].imei==imei){
        this.setData({
          info: list[i]
        })
      }
    }

    let info=this.data.info;
    console.log('点击的设备');
    console.log(info);

    //计算电量
    let electric=0;
    if(info.iotData.vol>=0){
      let str=(((info.iotData.vol-info.iotData.minvol)/(info.iotData.maxvol-info.iotData.minvol)*100).toFixed(2)).replace(regexp,'$1');
      if(str && !isNaN(str)){
        let num=Number(new String(str));
        if(num<0){
          electric=0;
        }else if(num>100){
          electric=100;
        }else{
          electric=num;
        }
      }
    }
    this.setData({
      electric: electric
    })

    //地理位置解析
    this.locationAnalysis(info.iotData);
  },

  //逆地址解析
  locationAnalysis(iotData){    
    let _this = this;
    let location = iotData.lat +','+ iotData.lng;
    let key = app.globalData.tencentKey;

    wx.request({
		  url: 'https://apis.map.qq.com/ws/geocoder/v1/?location='+location+'&key='+key+'&get_poi=1',
		  method: "GET",
		  success(res) {
        if(res.statusCode==200 && res.data){
          _this.setData({
            address: res.data.result.address
          })  
        }
		  }
    })
  },

  //点击地图
  onClickMap(){
    this.setData({
      showInfo: false
    })
  },

  //地图自适应缩放
  mapAdapt(markers){
    let map=wx.createMapContext('map');
    map.includePoints({
      points: markers
    });
  },

  //显示客户选择框
  onShowMember(){
    this.setData({
			showMember: true
    })
    //获取客户数据
    this.getMemberList();
  },

  //隐藏客户选择框
  onCloseMember(){
    this.setData({
      showMember: false,
      valueSearchMember: ''
    })
  },

  //获取客户数据
  getMemberList(){
    this.setData({
      memberList:[]
    })

    let param={
      isAuth:true,
      className:'depart',
      data:{
        searchAll:true,
        level:1,
        complex:[{
          "or": {
            type:4,
            multiType:4
          }
        }],
        name:{
          '!=':''
        },
        selectFields:['id','name']
      }
    }

    //客户名称模糊查询
    if(this.data.valueSearchMember){
      param.data.name='%'+this.data.valueSearchMember+'%'
    }

    CommonService.goFindList(param).then(res=>{
      if(res.data.data && res.data.data.result && res.data.data.count){
        let list=res.data.data.result;
        let arr=[];
        for(let i=0;i<list.length;i++){
          let obj={
            text:list[i].name,
            id:list[i].id,
            obj:list[i]
          }
          arr.push(obj);
        }
        this.setData({
          memberList: arr
        })
      }
    }).catch((error) => {
    })
  },

  //确认客户
  onConfirmMember(e){
    if(e.detail.value.obj){
      this.setData({
        member: e.detail.value.obj
      })
      this.onCloseMember();

      //获取设备
      this.getEquipmentList();
    }else{
      Toast.fail('未选择公司');
    }
  },

  //选择客户-搜索
  onChangeMemberName(e){
    this.setData({
      valueSearchMember: e.detail
    })

    //获取客户数据
    this.getMemberList();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  }
})
